// 路由守卫文件
import router from './index'
import { isUserLoggedIn, isAdminLoggedIn, getCurrentUserRole } from '@/utils/auth'

// 全局前置守卫
router.beforeEach((to, from, next) => {
    const userLoggedIn = isUserLoggedIn()
    const adminLoggedIn = isAdminLoggedIn()
    const currentRole = getCurrentUserRole()

    console.log('🔍 路由守卫检查:', {
        to: to.path,
        from: from.path,
        userLoggedIn,
        adminLoggedIn,
        currentRole,
        requiresAuth: to.matched.some(record => record.meta.requiresAuth),
        role: to.meta.role
    })

    // 如果访问登录页面，直接允许（不管是否已登录）
    if (to.path === '/login' || to.path === '/admin-login') {
        // 如果已登录用户尝试访问登录页，重定向到对应的首页
        if (to.path === '/login' && userLoggedIn) {
            console.log('✅ 用户已登录，从登录页重定向到首页')
            next('/home')
            return
        }

        if (to.path === '/admin-login' && adminLoggedIn) {
            console.log('✅ 管理员已登录，从登录页重定向到仪表盘')
            next('/admin/dashboard')
            return
        }

        // 允许访问登录页面
        console.log('✅ 允许访问登录页面')
        next()
        return
    }

    // 检查是否需要认证
    if (to.matched.some(record => record.meta.requiresAuth)) {
        // 检查是否有登录状态
        if (!userLoggedIn && !adminLoggedIn) {
            console.log('❌ 需要认证但未登录，重定向到登录页')
            // 根据来源页面或目标页面的角色要求决定跳转到哪个登录页
            if (to.meta.role === 'admin' || from.path.startsWith('/admin')) {
                next('/admin-login')
            } else {
                next('/login')
            }
            return
        }

        // 检查是否需要特定角色
        if (to.meta.role) {
            if (to.meta.role === 'admin' && !adminLoggedIn) {
                console.log('❌ 需要管理员权限但不是管理员')
                // 需要管理员权限但不是管理员
                next('/admin-login')
                return
            } else if (to.meta.role !== 'admin' && !userLoggedIn) {
                console.log('❌ 需要用户权限但不是用户')
                // 需要用户权限但不是用户
                next('/login')
                return
            }
        }
    }

    console.log('✅ 路由守卫检查通过，允许访问')
    // 其他情况允许访问
    next()
})

// 全局后置钩子
router.afterEach((to, from) => {
    // 设置页面标题
    if (to.meta.title) {
        document.title = `${to.meta.title} - HousingHub`
    } else {
        document.title = 'HousingHub - 房屋租赁平台'
    }

    // 页面访问统计（可选）
    if (process.env.NODE_ENV === 'development') {
        console.log(`从 ${from.path} 跳转到 ${to.path}`)
    }
})

export default router
